/**
 * Created by apple on 2017/7/6.
 */

var postHelp = module.exports;
var http = require('http');
var querystring = require('querystring');
var Config = require('../config');


postHelp.userCenterPost = function (path,contentsInfo,cb) {
    addSignToPar(contentsInfo,Config.APP_key,Config.APP_secret);
    postHelp.jsonPost(Config.UserCenterHost,path,5000,contentsInfo,cb);
}

postHelp.TaoSrvPost = function (path,contentsInfo,cb) {
    addSignToPar(contentsInfo,Config.blpd_APP_secret,Config.blpd_APP_secret);
    postHelp.jsonPost(Config.TaoSrvHost,path,3000,contentsInfo,cb);
}

postHelp.jsonPost = function (host,path,port,contentsInfo,cb) {

    postHelp.post(host,path,port,contentsInfo,true,cb);

}

//cb(err,data)
postHelp.post = function (host,path,port,contentsInfo,isJson,cb) {

    if(!host || !path || !port || !contentsInfo || !isJson ){
        cb('方法参数不为空');
        return;
    }

    var contents = querystring.stringify(contentsInfo);

    var options = {

        host:host,
        path:path,
        port: port,
        method:'POST',
        headers:{
            'Content-Type':'application/x-www-form-urlencoded',
            'Content-Length':contents.length
        }
    }

    var req = http.request(options, function (res) {
        res.setEncoding('utf8');

        var jsonData;
        res.on('data',function (data) {

            if(jsonData){
                jsonData += data;
            }else {
                jsonData = data;
            }
        });
        res.on('end',function(){

            try {
                if (isJson == true) {//要求返回的是json数据

                    // console.log(jsonData);
                    if (jsonData.indexOf('<html') > 0) {
                        cb('数据格式有误');
                        return;
                    }
                    var res = JSON.parse(jsonData);
                    if (res.status == 200 && res.payload) {
                        cb(null, res.payload);
                    } else {
                        cb(res.err);
                    }
                } else {//要求返回的是xml数据
                    if (jsonData.indexOf('<html>') > 0) {
                        cb(null, jsonData);
                        return;
                    }
                    cb('数据格式有误');
                }
            }
            catch (e) {
                cb(e);
                console.log(e);
                return;
            }


        });
    });


    req.on('error',function(err){
        console.log(err);
        cb(err);
        return;
    });

    req.write(contents);
    req.end;

}


//更改积分或者押金 contentsInfo包含信息：
//更改积分或者押金时直接调用,示例代码:
/*
 var postHelper = require('./util/postHelper'); //引入下

 //构造请求参数，把具体值替换即可
 var contentsInfo = {
    uid: 151,                     //用户uid
    picUrl: 'http://',           //主图
    goodShortTitle: '好看的裙子',  //段标题
    sign: 1,                     //0表示增加 1表示减少
    point: 1  ,                  //变更的积分
    comment: '上传商品扣除积分',    //变更原因
    vipSid: 'yajin'                //变更的分数
 }
 postHelper.postAlterScore(contentsInfo,function (err,data) {
     if(err){
        console.log(err);
        return;
     }
     console.log('成功:' + data);
 });

*/
postHelp.postAlterScore = function (contentsInfo,cb) {

    if(!contentsInfo.uid){
        cb('用户标识不为空，参数有误');
        return;
    }

    if(!contentsInfo.picUrl){
        cb('主图不为空，参数有误');
        return;
    }

    if(!contentsInfo.goodShortTitle){
        cb('短标题不为空，参数有误');
        return;
    }

    if(!contentsInfo.sign || (contentsInfo.sign != 0 && contentsInfo.sign != 1)){
        cb('增减标示不为空，参数有误');
        return;
    }

    if(!contentsInfo.point){
        cb('分数不为空，参数有误');
        return;
    }

    if(!contentsInfo.comment){
        cb('理由不为空，参数有误');
        return;
    }

    if(!contentsInfo.vipSid){
        cb('权限标示不为空,参数有误');
        return;
    }

    var param = getParWithSign(Config.APP_key,Config.APP_secret);
    param.uid = contentsInfo.uid; //用户uid
    param.exInfo = contentsInfo.picUrl;
    param.vipName = contentsInfo.goodShortTitle;
    param.sign = contentsInfo.sign; //0表示增加 1表示减少
    param.point = contentsInfo.point;  //上传商品的积分
    param.comment = contentsInfo.comment;
    param.vipSid = contentsInfo.vipSid;
    param.appSid = Config.appSid;

    postHelp.jsonPost(Config.UserCenterHost,'/srvLink/alterPoints',5000,param,function (err,data) {
        if(err){
            cb(err);
            return;
        }
        cb(null,data);
    });

}